from rest_framework.renderers import JSONRenderer


class MyRenderer(JSONRenderer):
    # 重构render方法
    '''
    参数名	作用
    self	类实例自身
    data	要渲染的数据 Python 数据结构
    accepted_media_type	客户端请求中表示接受的媒体类型（MIME type），如 application/json，告诉渲染器应该用什么格式输出数据
    renderer_context	额外上下文信息的字典，可能包含请求对象、视图、响应等信息，用于辅助渲染过程
    dict 的update是将其他dict合并在一起
    '''

    def render(self, data, accepted_media_type=None, renderer_context=None):
        # print("========================进入了render===========================")
        status_code = renderer_context['response'].status_code
        if str(status_code).startswith("2"):
            result = {
                "msg": 'success',
                "retcode": status_code,
            }
            if not isinstance(data, list):
                if 'retlist' not in data:
                    result.update({'retlist': [data]})
                else:
                    result.update(data)
            else:
                result.update({'retlist': data})
            return super().render(result, accepted_media_type, renderer_context)
        else:
            '''
            不是2开头的自己写，懒得写了
            '''
            return super().render(data, accepted_media_type, renderer_context)
